import { compileAttribute } from "./compileAttribute.js"
import { compileTextNode } from "./compileTextNode.js"

/**
 * 递归编译整颗节点树
 * @param {*} nodes 节点 
 * @param {*} vm 实例
 */
export function compileNode(nodes, vm) {
  // 遍历当前节点的所有子节点
  for(let i in nodes) {
    const node = nodes[i]
    if (node.nodeType === 1) {
      // 元素节点，则编译元素节点的属性节点
      compileAttribute(node, vm)
      // 递归编译子节点
      compileNode(Array.from(node.childNodes), vm)
    } else if (node.nodeType === 3 && node.textContent.match(/{{(.*)}}/)) {
      // 文本节点, 并且带有{{}} 语法的
      compileTextNode(node, vm)
    }
  }
}